Modern communication and data networks are comprised of nodes that transport data through the network. The nodes include routers and/or switches that select paths for the individual data as to travel through the network. As used herein, “path” may mean a list of next-hop addresses used by a packet to travel from a source to a destination Internet Protocol (IP) address. When large amounts of data are to be transported from a common source, A, to a common destination, Z, a data path can be established from A to Z. All the data to be transported from A to Z can be mapped to this path. By doing so, the nodes in the path no longer need to determine the path to transport the data packets. Instead, the nodes merely transport the data to the next node in the path, which may improve the efficiency of data transportation. The data is then transported from node to node through the network until the data arrives at the destination node.
Routers commonly establish paths between two end points based on IP addresses at the two end points. Currently, A to Z paths may be built by routing protocols and policies using the “shortest” distance metrics between the source and destination IP addresses, e.g., paths having the fewest number of next-hop addresses. Once a shortest distance path between end points A and Z is determined, all traffic between those end points may be required to follow the same path. Normally, routers do not select the second “shortest” path or third “shortest” path. However, if one source generates comparatively more traffic than another, the path servicing that source may become congested.
One attempt to resolve the congestion problem relies on adding more paths to the source. Since paths may be built by routing protocols and policies based on destination IP addresses, this approach may be limited by the routing protocols and algorithms.
In another attempt to resolve the congestion problem, each IP device makes its own path selection decisions using the destination IP address based on the agreement with other devices. In such a solution, the path may be determined before the packet leaves the source, tying together path creation and packet forwarding. This may lead to a variety of difficulties, including (i) a node may not make a forwarding decision without the agreement of all of the other nodes; (ii) there may not be a way to use other paths when the shortest path is congested; (iii) it may not be possible to have many paths and to simultaneously use these paths arbitrarily, e.g., because Equal-Cost Multi-Path (ECMP) routing requires all paths be identical; and (vi) an application may not have much influence on forwarding decision since its IP may have already determined the path.
In still another attempt to resolve the congestion problem, every network device may store all the available paths to a destination. In this solution, each device may check path conditions and select a path based on the results. This solution may present two problems: (i) this may place an impractical amount of data in the devices; and (ii) checking path conditions during forwarding may demand an impractical amount of processing for the devices.